package com.itheima.service;

import com.github.pagehelper.Page;
import com.itheima.entity.PageResult;
import com.itheima.pojo.Blog;
import com.itheima.pojo.Tag;

import java.util.List;
import java.util.Map;


/**
 * @author xuchangshuo
 * @date 2020/8/5 16:39
 */
public interface BlogService {

    //通过Uid获取博客内容
    Blog getBlogByUid(String uid);

    //通过Uid获取博客点赞数
    int getBlogPraiseCountByUid(String uid);
    //todo


    //根据BlogUid获取博客的类型
    String getBlogTypeByBlogUid(String blogUid);

    //根据BlogUid获取同类型的博客
    List<Blog> getSameBlogByBlogUid(String sortId);

    //根据标签获取相关的博客
    List<Blog> getSameBlogByTagUid(String tagUid);

    //通过Uid给博客点赞
    void praiseBlogByUid(String uid);
    /**
     * 增加博客
     * @param map
     */
    void add(Map<String, Object> map);

    /**
     * 增加博客
     * @param blogVO
     */
    void delete(Map<String, Object> blogVO);

    /**
     * 删除选中博客
     * @param blogVoList
     */
    void deleteBatch(List<Map<String, Object>> blogVoList);

    /**
     *编辑博客
     * @param blogVO
     */
    void edit(Map<String, Object> blogVO);

    /**
     * 获取博客列表
     * @param blogVO
     * @return
     */
    PageResult<Blog> getList(Map<String, Object> blogVO);

    /**
     * 根据推荐等级获取博客列表
     * @param level
     * @param currentPage
     * @param useSort
     * @return
     */
    Page<Blog> getBlogByLevel(Integer level, Long currentPage, Integer useSort);


    /**
     * 根据推荐等级获取博客列表
     * @param currentPage
     * @param pageSize
     * @return
     */
    Page<Blog> getBlogByTime(Long currentPage, Long pageSize);

    List<Blog> getHotBlog();

    List<Tag> getHotTag();

    List<Blog> getNewBlog(Long currentPage, Long pageSize);

    //查询所有
    List<Blog> getAll();

    //根据id查询单条数据
    Blog findById(String uid);



    /**
     * 通过TagUid获取文章
     * @param tagUid
     * @param currentPage
     * @param pageSize
     * @return
     */
    Page<Blog> getArticleByTagUid(String tagUid, Integer currentPage, Integer pageSize);
}
